import {AudioClip, instantiate, Node, Prefab, resources} from "cc"

/**
 * @author : 乔磊磊
 * @ide    : WebStorm
 * @date   : 2025/2/20 星期四 20:32
 * @desc   :
 */
export function loadAudio(audioPath: string): Promise<AudioClip> {
    return new Promise((resolve, reject) => {
        const audio = resources.get(audioPath, AudioClip)
        if (audio) {
            resolve(audio); // 如果资源已经加载，则直接解决Promise并返回音频数据
            return;
        }
        resources.load(audioPath, AudioClip, (err, data) => {
            if (err) {
                reject(err); // 如果加载失败，则拒绝Promise
            } else {
                resolve(data); // 如果加载成功，则解决Promise并返回音频数据
            }
        });
    });
}

export function loadPrefab(prefabPath: string): Promise<Prefab> {
    return new Promise((resolve, reject) => {
        const prefab = resources.get(prefabPath, Prefab)
        if (prefab) {
            resolve(prefab); // 如果资源已经加载，则直接返回Prefab数据
            return;
        }
        resources.load(prefabPath, Prefab, (err, data) => {
            if (err) {
                reject(err); // 如果加载失败，则拒绝Promise
            } else {
                resolve(data); // 如果加载成功，则解决Promise并返回Prefab数据
            }
        });
    });
}

export function loadNode(prefabPath: string): Promise<Node> {
    return new Promise((resolve, reject) => {
        const prefab = resources.get(prefabPath, Prefab)
        if (prefab) {
            resolve(instantiate(prefab)); // 如果资源已经加载
            return;
        }
        resources.load(prefabPath, Prefab, (err, prefab) => {
            if (err) {
                reject(err); // 如果加载失败，则拒绝Promise
            } else {
                resolve(instantiate(prefab)); // 如果加载成功，则解决Promise并返回Node数据
            }
        });
    });
}
